# -*- encoding: utf-8 -*-
"""

PyCharm MRO简介
2024年10月25日14时06分
by wenyang

文件主要内容:


"""
class A:
    def p(self):
        print("A")
class B():
    def p(self):
        print("B")
class C(A, B):
    def p(self):
        print("C")
class D(C):
    pass



def main():
    d = D()
    d.p()
    print(A.__mro__)
    print(B.__mro__)
    print(C.__mro__)
    print(D.__mro__)
    # super本身就是一个类 super()返回的就是一个实例化对象 返回的类就是根据mro的顺序来决定的 比如下面的例子
    # super(class, obj) 返回的就是一个实例化对象 返回的类就是obj的mro中class类的父类
    super(D, d).p() # 返回的就是C 相当于调用的就是C的p方法
    super(C, d).p() # 返回的就是A 相当与调用的就是A的p方法
    super(D, d).p() # 返回的就是C 相当于调用的就是C的p方法


if __name__ == "__main__":
    main()
